﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using KL.Store.Core;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace KL.Store.Core.Domain
{
    #region Account

    public class Account
    {
        public virtual int AccountId { get; set; }

        [Required(ErrorMessage = "Adınızı giriniz.")]
        [Display(Name = "Adınız")]
        public virtual string FirstName { get; set; }

        [Required(ErrorMessage = "Soyadınızı giriniz.")]
        [Display(Name = "Soyadınız")]
        public virtual string LastName { get; set; }

        [Display(Name = "Doğum Tarihiniz")]
        public virtual DateTime BirthDay { get; set; }

        [Required(ErrorMessage = "Eposta adresinizi giriniz.")]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Eposta Adresiniz")]
        public virtual string Email { get; set; }

        //[Required(ErrorMessage = "Mobil telefon numaranızı giriniz.")]
        [Display(Name = "Mobil Telefon Numaranız")]
        public virtual string Mobile { get; set; }

        ////[Required(ErrorMessage = "Telefon numaranızı giriniz.")]
        [Display(Name = "Telefon Numaranız")]
        public virtual string Phone { get; set; }

        [Display(Name = "Faks Numaranız")]
        public virtual string Fax { get; set; }

        [Display(Name = "Yurtdışı Telefon No")]
        public virtual string PhoneInternational { get; set; }

        //[Display(Name = "Adres Bilginiz")]
        //public virtual string Address1 { get; set; }

        //[Display(Name = "")]
        //public virtual string Address2 { get; set; }
        //public virtual string Address3 { get; set; }

        //[Display(Name = "Posta Kodunuz")]
        //public virtual string Address4 { get; set; }

        ////[Required(ErrorMessage = "Şehir seçiniz.")]
        //[RegularExpression("[1-9][0-9]*", ErrorMessage = "İl seçiniz.")]
        //[Display(Name = "Şehir")]
        //public virtual short City { get; set; }

        public virtual bool Enabled { get; set; }

        [Display(Name = "E-posta")]
        public virtual bool NewsLetter { get; set; }

        [Display(Name = "SMS")]
        public virtual bool CampaingSMSAndEmail { get; set; }

        public virtual DateTime CreateDate { get; set; }
        public virtual string strCreateDate { get; set; }
        public virtual string CreateUser { get; set; }
        public virtual DateTime UpdateDate { get; set; }
        public virtual string strUpdateDate { get; set; }
        public virtual string UpdateUser { get; set; }
        public virtual bool BasketLocked { get; set; }
        public virtual bool IsManager { get; set; }
        public virtual bool IsSeoManager { get; set; }
        public virtual bool IsReportManager { get; set; }
        public virtual bool IsAllowedBuyPrice { get; set; }
    }

    #endregion

    #region AccountEdit

    public class AccountEdit
    {
        public virtual int AccountId { get; set; }

        [Required(ErrorMessage = "Adınızı giriniz.")]
        [Display(Name = "Adınız")]
        public virtual string FirstName { get; set; }

        [Required(ErrorMessage = "Soyadınızı giriniz.")]
        [Display(Name = "Soyadınız")]
        public virtual string LastName { get; set; }

        [Display(Name = "Doğum Tarihiniz")]
        public virtual DateTime BirthDay { get; set; }

        [Required(ErrorMessage = "Eposta adresinizi giriniz.")]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Eposta Adresiniz")]
        public virtual string Email { get; set; }

        //[Required(ErrorMessage = "Mobil telefon numaranızı giriniz.")]
        [Display(Name = "Mobil Telefon Numaranız")]
        public virtual string Mobile { get; set; }

        [Display(Name = "Telefon Numaranız")]
        public virtual string Phone { get; set; }

        [Display(Name = "Faks Numaranız")]
        public virtual string Fax { get; set; }

        [Display(Name = "Yurtdışı Telefon No")]
        public virtual string PhoneInternational { get; set; }

        public virtual DateTime CreateDate { get; set; }
        public virtual string strCreateDate { get; set; }
        public virtual string CreateUser { get; set; }
        public virtual DateTime UpdateDate { get; set; }
        public virtual string strUpdateDate { get; set; }
        public virtual string UpdateUser { get; set; }
        public virtual bool IsManager { get; set; }
        public virtual bool IsSeoManager { get; set; }
        public virtual bool IsReportManager { get; set; }
        public virtual bool IsAllowedBuyPrice { get; set; }
    }

    #endregion

    #region Active Account

    public class ActiveAccount
    {
        public ActiveAccount()
        {
            AccountId = -1;
            CultureInfo = Parameters.DefaultCulture;
            ListType = "Grid";
            PageItemCount = 6;
            Email = "";
            Theme = "Default";
            FirstName = "";
            LastName = "";
            TotalQty = 0;
            TotalPrice = 0;
            Tax = 0;
            ItemCount = 0;
            ProductIdToAddCart = 0;
            ProductVariantToAddCart = "";
            InstallmentSelected = false;
            ProductAmountToAddCart = 0;
            InstallmentPrice = 0;
            InstallmentTax = 0;
            UTMReferral = "";
            BasketLocked = false;
            IsManager = false;
            IsSeoManager = false;
            IsReportManager = false;
            IsAllowedBuyPrice = false;
            AccountType = 1;
            RedirectUrl = "";
            CustomPaymentCaptchaVerified = false;
            SelectedGuarantor1Id = 0;
            SelectedGuarantor2Id = 0;
        }

        public int AccountId { get; set; }
        public string UserName { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string Mobile { get; set; }
        public string CultureInfo { get; set; }
        public string Theme { get; set; }
        public string ListType { get; set; }
        public int PageItemCount { get; set; }
        public decimal TotalQty { get; set; }
        public decimal TotalPrice { get; set; }
        public decimal Tax { get; set; }
        public decimal InstallmentPrice { get; set; }
        public decimal InstallmentTax { get; set; }
        public int ItemCount { get; set; }
        public int ProductIdToAddCart { get; set; }
        public string ProductVariantToAddCart { get; set; }
        public bool InstallmentSelected { get; set; }
        public int ProductAmountToAddCart { get; set; }
        public string UTMReferral { get; set; }
        public bool BasketLocked { get; set; }
        public bool IsManager { get; set; }
        public bool IsSeoManager { get; set; }
        public bool IsReportManager { get; set; }
        public bool IsAllowedBuyPrice { get; set; }
        public int AccountType { get; set; }
        public string RedirectUrl { get; set; }
        public bool CustomPaymentCaptchaVerified { get; set; }
        public int SelectedGuarantor1Id { get; set; }
        public int SelectedGuarantor2Id { get; set; }
    }

    #endregion

    #region VoucherPayment

    public class Guarantor
    {
        public Guarantor()
        {
            AccountId = -1;
            CultureInfo = Parameters.DefaultCulture;
            ListType = "Grid";
            PageItemCount = 6;
            Email = "";
            Theme = "Default";
            FirstName = "";
            LastName = "";
            FullName = "";
            TotalQty = 0;
            TotalPrice = 0;
            Tax = 0;
            ItemCount = 0;
            ProductIdToAddCart = 0;
            ProductVariantToAddCart = "";
            InstallmentSelected = false;
            ProductAmountToAddCart = 0;
            InstallmentPrice = 0;
            InstallmentTax = 0;
            UTMReferral = "";
            IsManager = false;
            IsSeoManager = false;
            IsReportManager = false;
            IsAllowedBuyPrice = false;
            AccountType = 1;
            Cinsiyet = "";
            DogumTarihi = new DateTime();
            BirthDayNumber = "";
            BirthMonth = "";
            BirthYear = "";
            DogumYer = "";
            CepTel = "";
            EvTel = "";
            EvAdres = "";
            IsYeriAdi = "";
            IsAdres = "";
            IsTel = "";
            IsGorev = "";
            EvKendineAit = -1;
            EvKira = false;
            Baba_Ad = "";
            Anne_Ad = "";
            N_TCKimlikNo = "";
            N_SeriNo = "";
            N_Cuzdan_No = "";
            N_KutukIl = "";
            N_Ilce = "";
            N_Mahalle = "";
            N_CiltNo = "";
            N_AileSiraNo = "";
            N_SiraNo = "";
        }
        public int AccountId { get; set; }
        public string UserName { get; set; }

        [Display(Name = "Adı")]
        public string FirstName { get; set; }

        [Display(Name = "Soyadı")]
        public string LastName { get; set; }

        [Display(Name = "Adı ve Soyadı")]
        public string FullName { get; set; }

        [Display(Name = "E-Posta Adresi")]
        public string Email { get; set; }

        [Display(Name = "Cep Telefonu")]
        public string Mobile { get; set; }

        [Display(Name = "Dil")]
        public string CultureInfo { get; set; }

        [Display(Name = "Şablon")]
        public string Theme { get; set; }
        public string ListType { get; set; }
        public int PageItemCount { get; set; }
        public decimal TotalQty { get; set; }
        public decimal TotalPrice { get; set; }
        public decimal Tax { get; set; }
        public decimal InstallmentPrice { get; set; }
        public decimal InstallmentTax { get; set; }
        public int ItemCount { get; set; }
        public int ProductIdToAddCart { get; set; }
        public string ProductVariantToAddCart { get; set; }
        public bool InstallmentSelected { get; set; }
        public int ProductAmountToAddCart { get; set; }
        public string UTMReferral { get; set; }
        public bool IsManager { get; set; }
        public bool IsSeoManager { get; set; }
        public bool IsReportManager { get; set; }
        public bool IsAllowedBuyPrice { get; set; }
        public int AccountType { get; set; }
        public Nufus NufusBilgileri { get; set; }

        [Display(Name = "Cinsiyet")]
        public string Cinsiyet { get; set; }

        [Display(Name = "Doğum Tarihi")]
        public DateTime DogumTarihi { get; set; }

        [Display(Name = "Doğum Tarihi")]
        public string BirthDayNumber { get; set; }
        public string BirthMonth { get; set; }
        public string BirthYear { get; set; }

        [Display(Name = "Doğum Yeri")]
        public string DogumYer { get; set; }

        [Display(Name = "Cep Telefonu")]
        public string CepTel { get; set; }

        [Display(Name = "Ev Telefonu")]
        public string EvTel { get; set; }

        [Display(Name = "Ev Adresi")]
        public string EvAdres { get; set; }

        [Display(Name = "İş Yeri Adı")]
        public string IsYeriAdi { get; set; }

        [Display(Name = "İş Adresi")]
        public string IsAdres { get; set; }

        [Display(Name = "İş Telefonu")]
        public string IsTel { get; set; }

        [Display(Name = "İş Yerindeki Pozisyonu")]
        public string IsGorev { get; set; }

        [Display(Name = "Ev Durumu")]
        public int EvKendineAit { get; set; }

        [Display(Name = "Evi Kira mı?")]
        public bool EvKira { get; set; }

        [Display(Name = "Baba Adı")]
        public string Baba_Ad { get; set; }

        [Display(Name = "Anne Adı")]
        public string Anne_Ad { get; set; }

        [Display(Name = "TC Kimlik No")]
        public string N_TCKimlikNo { get; set; }

        [Display(Name = "Nüfus Seri No")]
        public string N_SeriNo { get; set; }

        [Display(Name = "Nüfus Cüzdan No")]
        public string N_Cuzdan_No { get; set; }

        [Display(Name = "Kütüğe Bağlı Olduğu İl")]
        public string N_KutukIl { get; set; }

        [Display(Name = "Kütüğe Bağlı Olduğu İlçe")]
        public string N_Ilce { get; set; }

        [Display(Name = "Kütüğe Bağlı Olduğu Mahalle")]
        public string N_Mahalle { get; set; }

        [Display(Name = "Nüfus Cilt No")]
        public string N_CiltNo { get; set; }

        [Display(Name = "Nüfus Aile Sıra No")]
        public string N_AileSiraNo { get; set; }

        [Display(Name = "Nüfus Sıra No")]
        public string N_SiraNo { get; set; }
        public IList<CityDDL> CityList { get; set; }

        public List<SelectListItem> days { get; set; }
        public List<SelectListItem> months { get; set; }
        public List<SelectListItem> years { get; set; }

    }

    public class GuarantorDDL
    {
        public int AccountId { get; set; }
        public string FullName { get; set; }
    }

    public class Nufus
    {
        public Nufus()
        {
            MusId = 0;
            Cinsiyet = "";
            DogumTarihi = new DateTime();
            BirthDayNumber = "";
            BirthMonth = "";
            BirthYear = "";
            DogumYer = "";
            CepTel = "";
            EvTel = "";
            EvAdres = "";
            IsYeriAdi = "";
            IsAdres = "";
            IsTel = "";
            IsGorev = "";
            EvKendineAit = -1;
            EvKira = false;
            FirstName = "";
            LastName = "";
            Baba_Ad = "";
            Anne_Ad = "";
            N_TCKimlikNo = "";
            N_SeriNo = "";
            N_Cuzdan_No = "";
            N_KutukIl = "";
            N_Ilce = "";
            N_Mahalle = "";
            N_CiltNo = "";
            N_AileSiraNo = "";
            N_SiraNo = "";
            AylikGelir = "";

            days = new List<SelectListItem>();
            months = new List<SelectListItem>();
            years = new List<SelectListItem>();
            var dayValue = "";
            days.Add(new SelectListItem { Text = "Seçiniz", Value = "" });
            for (var i = 1; i <= 31; i++)
            {
                dayValue = (i < 10) ? "0" + i.ToString() : i.ToString();
                days.Add(new SelectListItem { Text = dayValue, Value = i.ToString() });
            }
            months.Add(new SelectListItem { Text = "Seçiniz", Value = "" });
            months.Add(new SelectListItem { Text = "Ocak", Value = "1" });
            months.Add(new SelectListItem { Text = "Şubat", Value = "2" });
            months.Add(new SelectListItem { Text = "Mart", Value = "3" });
            months.Add(new SelectListItem { Text = "Nisan", Value = "4" });
            months.Add(new SelectListItem { Text = "Mayıs", Value = "5" });
            months.Add(new SelectListItem { Text = "Haziran", Value = "6" });
            months.Add(new SelectListItem { Text = "Temmuz", Value = "7" });
            months.Add(new SelectListItem { Text = "Ağustos", Value = "8" });
            months.Add(new SelectListItem { Text = "Eylül", Value = "9" });
            months.Add(new SelectListItem { Text = "Ekim", Value = "10" });
            months.Add(new SelectListItem { Text = "Kasım", Value = "11" });
            months.Add(new SelectListItem { Text = "Aralık", Value = "12" });

            var eighteenAgo = DateTime.Now.Year - 18;
            var hundredAgo = DateTime.Now.Year - 100;
            years.Add(new SelectListItem { Text = "Seçiniz", Value = "" });
            for (var i = eighteenAgo; i >= hundredAgo; i--)
            {
                years.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
            }
        }

        public int MusId { get; set; }

        [Display(Name = "Cinsiyet")]
        public string Cinsiyet { get; set; }

        [Display(Name = "Doğum Tarihi")]
        public DateTime DogumTarihi { get; set; }
        public string BirthDayNumber { get; set; }
        public string BirthMonth { get; set; }
        public string BirthYear { get; set; }

        [Display(Name = "Doğum Yeri")]
        public string DogumYer { get; set; }

        [Display(Name = "Aylık Gelir (TL)")]
        public string AylikGelir { get; set; }

        [Display(Name = "Cep Telefonu")]
        public string CepTel { get; set; }

        [Display(Name = "Ev Telefonu")]
        public string EvTel { get; set; }

        [Display(Name = "Ev Adresi")]
        public string EvAdres { get; set; }

        [Display(Name = "İş Yeri Adı")]
        public string IsYeriAdi { get; set; }

        [Display(Name = "İş Adresi")]
        public string IsAdres { get; set; }

        [Display(Name = "İş Telefonu")]
        public string IsTel { get; set; }

        [Display(Name = "İş Yerindeki Pozisyonu")]
        public string IsGorev { get; set; }

        [Display(Name = "Ev Durumu")]
        public int EvKendineAit { get; set; }

        [Display(Name = "Evi Kira mı?")]
        public bool EvKira { get; set; }

        [Display(Name = "Adı")]
        public string FirstName { get; set; }

        [Display(Name = "Soyadı")]
        public string LastName { get; set; }

        [Display(Name = "Baba Adı")]
        public string Baba_Ad { get; set; }

        [Display(Name = "Anne Adı")]
        public string Anne_Ad { get; set; }

        [Display(Name = "TC Kimlik No")]
        public string N_TCKimlikNo { get; set; }

        [Display(Name = "Nüfus Seri No")]
        public string N_SeriNo { get; set; }

        [Display(Name = "Nüfus Cüzdan No")]
        public string N_Cuzdan_No { get; set; }

        [Display(Name = "Kütüğe Bağlı Olduğu İl")]
        public string N_KutukIl { get; set; }

        [Display(Name = "Kütüğe Bağlı Olduğu İlçe")]
        public string N_Ilce { get; set; }

        [Display(Name = "Kütüğe Bağlı Old. Mahalle")]
        public string N_Mahalle { get; set; }

        [Display(Name = "Cilt No")]
        public string N_CiltNo { get; set; }

        [Display(Name = "Aile Sıra No")]
        public string N_AileSiraNo { get; set; }

        [Display(Name = "Sıra No")]
        public string N_SiraNo { get; set; }
        public IList<CityDDL> CityList { get; set; }

        public List<SelectListItem> days { get; set; }
        public List<SelectListItem> months { get; set; }
        public List<SelectListItem> years { get; set; }
    }

    public class OrderUserInfo
    {
        public OrderUserInfo()
        {
            Kimlik = new Nufus();
            Kefiller = new List<Guarantor>();
        }
        public Nufus Kimlik;
        public List<Guarantor> Kefiller;

    }

    #endregion

}
